package acmCoder;

/**
 * 求1-n的阶乘中末尾0的个数为偶数的个数
 * n的范围是10^18.  0算偶数
 * Created by shuowu on 2017/10/20.
 */
public class FactorialCount {

    public long getZeroCount(long n){
        long res = 0;  //ret为末尾0的个数
//		// 这种思路是，5的倍数贡献一个5，而5的平方的倍数再贡献一个5.比如25，在5的倍数中贡献了一个5，但是他等于5^2,
//		// 应该再贡献一个5，也就是要在25的倍数中贡献一个5
//		// 同理，125在5和25的倍数中贡献了2个5，在125的倍数中再次贡献一个
		while (n != 0) {
			res += n / 5;   //比如25，在25之前的数字中有5 10 15 20 25一共贡献了5个5，
			                //所以初始除以5 表示的是5的倍数的个数 ，然后就是25的倍数的个数
			System.out.println(res + " N" + n);
			n /= 5;
		}
		return res;
//		System.out.println(res);
//		//这种效率很低
//		//思路很清晰，从1->n,就是只要是5的倍数，就增加5的指数的个数，若是5的平方了，就加两个，反正就是直到不是
//		//5的倍数为止
//        int j = 0;
//        for (int i = 1; i <= N; i++) {
//            j = i;
//            while (j % 5 == 0) {
//                res++;
//                j /= 5;
//            }
//        }
//        System.out.println(res);
    }
}
